home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / internet / yam_i_dodatki / yamaminetftpb / aminetftpb.yam < prev   
Text File  |  1997-09-09  |  9KB  |  268 lines

  1. /* $VER: AminetFTPb.yam 2.1 (09 AUG 97)
  2. ** by Charles Patterson <midian@azstarnet.com>
  3. ** http://www.azstarnet.com/~midian
  4. **
  5. ** Localization by Marc Hemes <marc.hemes@braunschweig.netsurf.de
  6. **
  7. ** Description: This script finds your "Today's Aminet Upload" email in
  8. **              YAM, lists the files so you can choose which ones you want
  9. **              to download, then uses AmFTP to download the selected files.
  10. **
  11. ** Requirements: YAM 1.3.4 (© 1995-96 Marcel Beck)
  12. **               TCP/IP Stack
  13. **               rexxreqtools.library 1.3 (© 1992-94 Rafael D'Halleweyn)
  14. **               AmFTP 1.75 (© 1995-97 Mathias Michler)
  15. **
  16. ** Instructions: Send email to listproc@mail.wustl.edu with the body:
  17. **                              SUBSCRIBE aminet-daily Your Name
  18. **                           or SUBSCRIBE aminet-weekly Your Name
  19. **               Copy this file to YAM:Rexx/
  20. **               Set FILES to the number of files you want listed at a time
  21. **               Open the YAM:.config file and add this line:
  22. **                              RexxMenu1 = YAM:Rexx/AminetFTP.yam
  23. **               Change the AMFTP, AMINET and LOCALDIR settings in script
  24. **               Download your email then run this script from the YAM
  25. **                  ARexx menu.
  26. **
  27. ** --- Files listed: --- */
  28. FILES = 10
  29.  
  30. /* --- Path to run AmFTP: --- */
  31. AMFTP="DH2:Applications/AmFTP/AmFTP"
  32.  
  33. /* --- Local Aminet Site: --- */
  34. AMINET="wuarchive.wustl.edu"
  35.  
  36. /* --- Local directory Site: --- */
  37. LOCALDIR="DH2:lookat"
  38.  
  39. today = "Today's Aminet "
  40. weekly = "This week's Ami"
  41.  
  42. OPTIONS RESULTS
  43. ADDRESS YAM
  44.  
  45. IF ~SHOW('L','rexxsupport.library') THEN
  46.     ADDLIB('rexxsupport.library',0,-30,0)
  47.  
  48. IF ~SHOW('L','rexxreqtools.library') THEN
  49.     ADDLIB('rexxreqtools.library',0,-30,0)
  50.  
  51. NL = '0A'x
  52.  
  53. IF OPEN('localeprefs','ENV:sys/locale.prefs','R') THEN DO
  54.     language = SUBSTR(READCH('localeprefs', 113), 83, 29)
  55.     language = SUBSTR(language, 1, POS(D2C(0), language) - 1)
  56.     CLOSE('localeprefs')
  57. END
  58.  
  59. SELECT
  60.     WHEN language = 'deutsch' THEN DO  /* german text */
  61.         MSG_NOMAIL        = "Keine E-Mails im Ordner !"
  62.         MSG_ASKCHECK      = "Welche möchten Sie prüfen ?"
  63.         MSG_ASKCHECK_GAD  = "Heu_te|_Woche|Alle tä_glichen|Alle wöch_entlichen|_Alle|Abbru_ch"
  64.         MSG_MAILNOTFOUND  = "E-Mails mit Aminet-Uploads nicht gefunden !"
  65.         MSG_LISTFILES     = "Dateien aus welchen E-Mails auflisten ?"
  66.         MSG_LISTFILES_GAD = "Au_sgewählte|_Andere"
  67.         MSG_FILES         = "Dateinummern eingeben (z.B. 1 2 5)"
  68.         MSG_FILES_GAD     = "_Ok|_Fertig|_Abbruch|_Zurück|_Weiter"
  69.         MSG_README        = "Möchten Sie für jede Datei auch auch die zugehörigen .readme-Dateien ? "
  70.         MSG_README_GAD    = "_Ja|_Nein"
  71.     END
  72.     WHEN language = 'français' THEN DO  /* french text */
  73.         MSG_NOMAIL        = "Pas de messages dans ce dossier !"
  74.         MSG_ASKCHECK      = "Souhaitez-vous rechercher les nouveautés dans les messages de ?"
  75.         MSG_ASKCHECK_GAD  = "_Aujourd'hui|La _semaine|Tous les _jours|Toute _les semaines|_Tous|_Annuler"
  76.         MSG_MAILNOTFOUND  = "Message des nouveautés sur Aminet pas trouvé !"
  77.         MSG_LISTFILES     = "Lister les nouveautés dans les messages"
  78.         MSG_LISTFILES_GAD = "_Sélectionnés|_Autres"
  79.         MSG_FILES         = "Entrez les numéros des fichiers (par ex. 1 2 5)"
  80.         MSG_FILES_GAD     = "_Ok|_Terminé|_Annuler|_Revenir|_Prochain"
  81.         MSG_README        = "Souhaitez-vous recevoir les fichiers .readme également ?"
  82.         MSG_README_GAD    = "_Oui|_Non"
  83.         MSG_ASKSEND       = "Le message est écrit."NL"Souhaitez-vous ?"
  84.         MSG_ASKSEND_GAD   = "Envoyer ce _message|Envoyer _tous les messages|Mettre ce message en _attente"
  85.     END
  86.     OTHERWISE DO /* english text */
  87.         MSG_NOMAIL        = "No email in folder!"
  88.         MSG_ASKCHECK      = "Do you wish to check"
  89.         MSG_ASKCHECK_GAD  = "_Today's|_Week's|All _dailys|All w_eeklys|_All|_Cancel"
  90.         MSG_MAILNOTFOUND  = "Aminet Uploads email not found!"
  91.         MSG_LISTFILES     = "List files in:"
  92.         MSG_LISTFILES_GAD = "_Selected|_Other"
  93.         MSG_FILES         = "Enter filenumbers (ie. 1 2 5)"
  94.         MSG_FILES_GAD     = "_Ok|_Finished|_Abort|_Back|_Next"
  95.         MSG_README        = "Do you want each file's .readme as well?"
  96.         MSG_README_GAD    = "_Yes|_No"
  97.     END
  98. END
  99.  
  100. INFO SCREEN
  101. pubscreen = result
  102. GETFOLDERINFO MAX
  103. entries=result
  104. IF entries=0 THEN
  105.     DO
  106.         test=RTEZREQUEST(MSG_NOMAIL,"_Ok",,"rt_pubscrname="pubscreen)
  107.         EXIT
  108.     END
  109.  
  110. lfi = 0
  111. t = 0
  112. checkn = 0
  113. filename. = ''
  114. GETMAILINFO SUBJECT
  115. sub = LEFT(RESULT,15)
  116. IF sub = today | sub = weekly THEN
  117.     DO
  118.         test=RTEZREQUEST(MSG_LISTFILES,MSG_LISTFILES_GAD,,"rt_pubscrname="pubscreen)
  119.         lfi = rtresult
  120.     END
  121. IF lfi THEN
  122.     DO
  123.         t = 1
  124.         GETMAILINFO FILE
  125.         filename.1 = RESULT
  126.     END
  127. ELSE
  128.     DO
  129.         test=RTEZREQUEST(MSG_ASKCHECK,MSG_ASKCHECK_GAD,,"rt_pubscrname="pubscreen)
  130.         checkn = rtresult
  131.         IF checkn = 0 THEN EXIT
  132.         IF checkn = 1 | checkn = 3 THEN check = today
  133.         IF checkn = 2 | checkn = 4 THEN check = weekly
  134.         DO n = entries-1 TO 0 BY -1
  135.             SETMAIL n
  136.             GETMAILINFO SUBJECT
  137.             sub = LEFT(RESULT,15)
  138.             IF checkn = 5 THEN
  139.                 DO
  140.                     IF sub = today | sub = weekly THEN
  141.                         DO
  142.                             t = t + 1
  143.                             GETMAILINFO FILE
  144.                             filename.t = RESULT
  145.                         END
  146.                     END
  147.             ELSE
  148.                 IF sub = check THEN
  149.                     DO
  150.                         t = t + 1
  151.                         GETMAILINFO FILE
  152.                         filename.t = RESULT
  153.                     END
  154.         END
  155.     END
  156.  
  157. IF t = 0 THEN
  158.     DO
  159.         test=RTEZREQUEST(MSG_MAILNOTFOUND,"_Ok",,"rt_pubscrname="pubscreen)
  160.         EXIT
  161.     END
  162.  
  163. IF checkn < 3 THEN t = 1
  164.  
  165. DO mail = 1 to t
  166.     line. = ''
  167.     ADDRESS COMMAND 'COPY 'filename.mail' TO T:FTPMail.rct'
  168.     OPEN('recent','T:FTPMail.rct','R')
  169.  
  170.     DO UNTIL LEFT(READLN('recent'),3) = '|--'
  171.     END
  172.  
  173.     i=0
  174.     DO WHILE ~EOF('recent')
  175.         i=i+1
  176.         line.i=READLN('recent')
  177.         IF LEFT(line.i,1) = '|' THEN BREAK
  178.         IF STRIP(line.i) = '' THEN i=i-1
  179.     END
  180.     CLOSE('recent')
  181.  
  182.     c = 0
  183.     w = i%FILES
  184.     IF i//FILES >0 THEN w = w + 1
  185.  
  186.     DO n = 1 to w
  187.         DO f = n*FILES-(FILES-1) to n*FILES
  188.             PARSE VAR line.f file.f dir.f size.f '+' desc.f
  189.             file.f = LEFT(file.f,18,' ')
  190.             dir.f = LEFT(dir.f,10,' ')
  191.             size.f = RIGHT(size.f,4,' ')
  192.             desc.f = LEFT(desc.f,37,)
  193.         END
  194.  
  195.         reqstr = ''
  196.         DO x = f-FILES to f-1
  197.             y=x
  198.             if y<10 then y=' '||y
  199.             reqstr =  reqstr || y'. 'file.x' 'dir.x' 'size.x' 'desc.x||NL
  200.         END
  201.         input = RTGETSTRING(,reqstr,MSG_FILES,MSG_FILES_GAD,"rt_pubscrname="pubscreen)
  202.         SELECT
  203.             WHEN rtresult = 2 THEN BREAK
  204.             WHEN rtresult = 3 THEN EXIT
  205.             WHEN rtresult = 4 THEN DO
  206.                 n = n - 2
  207.                 IF n < 0 then n = 0
  208.             END
  209.             OTHERWISE DO WHILE input ~= ''
  210.                 c = c+1
  211.                 PARSE VAR input filenum.c input
  212.                 j = filenum.c
  213.                 IF STRIP(file.j) = '' THEN c = c-1
  214.             END
  215.         END
  216.     END
  217.  
  218.     close = 0
  219.     IF c > 0 THEN
  220.         DO
  221.             test=RTEZREQUEST(MSG_README,MSG_README_GAD,,"rt_pubscrname="pubscreen)
  222.             read = rtresult
  223.             IF ~SHOW('P',AMFTP.1) THEN
  224.                 DO
  225.                     ADDRESS COMMAND RUN AMFTP
  226.                     ADDRESS COMMAND WAITFORPORT AMFTP.1
  227.                     close=1
  228.                 END
  229.  
  230.             ADDRESS 'AMFTP.1'
  231.             CALL OPENPORT("AMFTP-RESULT.1")
  232.             CHANGELOCALDIR LOCALDIR
  233.             CONNECTHOST AMINET
  234.             WAITACTION "AMFTP-RESULT.1"
  235.             CALL WAITPKT "AMFTP-RESULT.1"
  236.             predir = ''
  237.             DO mc = 1 to c
  238.                 d = filenum.mc
  239.                 dir = "/pub/aminet/"||STRIP(dir.d)
  240.                 IF dir ~= predir THEN DO
  241.                     CHANGEDIR dir
  242.                     WAITACTION "AMFTP-RESULT.1"
  243.                     CALL WAITPKT "AMFTP-RESULT.1"
  244.                 END
  245.                 'BATCH' file.d
  246.                 IF read THEN DO
  247.                     lgt = LENGTH(COMPRESS(file.d))-3
  248.                     filer = LEFT(file.d,lgt)||"readme"
  249.                     'BATCH' filer
  250.                 END
  251.                 predir = dir
  252.             END
  253.             IF read THEN c = c * 2
  254.             RECEIVEBATCH
  255.             DO f = 1 to c
  256.                 WAITACTION "AMFTP-RESULT.1"
  257.                 CALL WAITPKT "AMFTP-RESULT.1"
  258.                 DELAY(2*50)
  259.             END
  260.             'CLOSE'
  261.             CALL CLOSEPORT "AMFTP-RESULT.1"
  262.             IF close THEN QUIT
  263.         END
  264. END
  265. ADDRESS COMMAND 'DELETE T:FTPMail.*'
  266. EXIT
  267.  
  268.